package gstudio.data;

import java.util.ArrayList;
import java.util.List;

public class RuntimeDataManager {
	private static RuntimeDataManager dataManager;

	public static RuntimeDataManager getInstance() {
		if (dataManager == null) {
			dataManager = new RuntimeDataManager();
		}
		return dataManager;
	}

	private List<IData> artikelList = new ArrayList<IData>();
	private IData currentData;
	private int maxArtikelId = 0;

	private int maxSatzId = 0;

	private int maxWortId = 0;

	private List<IData> satzList = new ArrayList<IData>();
	private List<IData> wortList = new ArrayList<IData>();

	// add
	public void addArtikel(IData iData) {
		String id = iData.getValueOf("id");
		if (id.equalsIgnoreCase("")) {
			maxArtikelId++;
			iData.setValueOf("id", maxArtikelId + "");
		} else {
			int m = Integer.parseInt(id);
			maxArtikelId = m > maxArtikelId ? m : maxArtikelId;
		}
		artikelList.add(iData);
	}

	// add
	public void addSatz(IData iData) {
		String id = iData.getValueOf("id");
		if (id.equalsIgnoreCase("")) {
			maxSatzId++;
			iData.setValueOf("id", maxSatzId + "");
		} else {
			int m = Integer.parseInt(id);
			maxSatzId = m > maxSatzId ? m : maxSatzId;
		}
		satzList.add(iData);
	}

	// add
	public void addWort(IData iData) {
		String id = iData.getValueOf("id");
		if (id.equalsIgnoreCase("")) {
			maxWortId++;
			iData.setValueOf("id", maxWortId + "");
		} else {
			int m = Integer.parseInt(id);
			maxWortId = m > maxWortId ? m : maxWortId;
		}
		wortList.add(iData);
	}

	// get
	public List<IData> getArtikelList() {
		return artikelList;
	}

	// get CurrentAritkel
	public IData getCurrentData() {
		return currentData;
	}

	//
	public List<IData> getListByIds(String type, String ids) {
		if (ids == null || ids.trim().equals(""))
			return null;

		List<IData> outputList = new ArrayList<IData>();
		String[] idArray = ids.split(" ");
		List<IData> list = null;

		if (type.equalsIgnoreCase("artikel")) {
			list = artikelList;
		} else if (type.equalsIgnoreCase("wort")) {
			list = wortList;
		} else if (type.equalsIgnoreCase("satz")) {
			list = satzList;
		} else {
			return null;
		}

		String id0;
		for (IData iData : list) {
			id0 = iData.getValueOf("id");
			for (String id : idArray) {
				if (id0.equals(id)) {
					outputList.add(iData);
				}

			}
		}

		if (outputList.size() > 0) {
			return outputList;
		}
		return null;
	}

	// get
	public List<IData> getSatzList() {
		return satzList;
	}

	// get
	public List<IData> getWortlList() {
		return wortList;
	}

	// remove
	public void removeArtikel(IData iData) {
		artikelList.remove(iData);
	}

	// remove
	public void removeSatz(IData iData) {
		satzList.remove(iData);
	}

	// remove
	public void removeWort(IData iData) {
		wortList.remove(iData);
	}

	public void setCurrentData(IData artikel) {
		this.currentData = artikel;
	}

	public List<IData> getWortList() {
		return wortList;
	}

	public void setWortList(List<IData> wortList) {
		this.wortList = wortList;
	}

	public void setArtikelList(List<IData> artikelList) {
		this.artikelList = artikelList;
	}

	public void setSatzList(List<IData> satzList) {
		this.satzList = satzList;
	}

	public void removeSatzOfArtikel(IData artikel) {
		if (artikel == null)
			return;
		String id = artikel.getValueOf("id").trim();
		if(id.equalsIgnoreCase("")) return; 
		
		String parentIds;
		List<IData> list=new ArrayList<IData>();
		
		for (IData idata : satzList) {
			parentIds=idata.getValueOf("pids"); 
			if (parentIds.equals(id)) { 
				list.add(idata);
			}
		}
		for(IData idata: list){
			satzList.remove(idata);
		}
		 
	}

}
